]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspacesView: Work around Clutter optimization
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 3 Oct 2020 08:12:13 +0000 (10:12 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 5 Oct 2020 12:11:55 +0000 (14:11 +0200)
Clutter nowadays omits reallocations when only the stage position
changed, that is when the allocation relative to the parent changed.

As a result (apart from better performance of course), workspaces
in the overview may now end up with an outdated "actual geometry"
in case the overview moved to a new primary monitor (of equal size
as the previous one).

Work around that by emitting a signal from the overview on allocation
changes, and use that to update the cached geometry.

We can revert that change once workspaces become part of the regular
overview hierarchy.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3211

js/ui/overview.js
js/ui/workspacesView.js

index 219645dd6ac4155d39636fccc6488bd3c4bbdd63..9682f8e14279a553e3cd6a764c996e38321028c6 100644 (file)
@@ -294,6 +294,7 @@ var Overview = class {
         this._overview = new OverviewActor();
         this._overview._delegate = this;
         Main.layoutManager.overviewGroup.add_child(this._overview);
+        this._overview.connect('notify::allocation', () => this.emit('relayout'));
 
         this._shellInfo = new ShellInfo();
 
index b97bf5a4c89f2f34862785b3924a763ad32f8db9..4aac1cc1cd24bae0bc241c201c204e1f026b2ea1 100644 (file)
@@ -339,6 +339,9 @@ class WorkspacesDisplay extends St.Widget {
         });
         this.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
 
+        Main.overview.connect('relayout',
+            () => this._updateWorkspacesActualGeometry());
+
         let workspaceManager = global.workspace_manager;
         this._scrollAdjustment = scrollAdjustment;